package com.h819.core.db;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import static java.lang.System.out;

/**
 * @Title: SqlUtils.java
 * @Description: TODO( sql 语句工具类)
 * @author H819
 * @date 2010-7-1
 * @version V1.0
 */
public class SqlUtils {

	private static Logger log = Logger.getLogger(SqlUtils.class);
	private static SqlUtils instance;

	/**
	 * 静态类，提供静态方法，不允许实例化
	 */
	private SqlUtils() {
	}

	/**
	 * 应用单例模式，返回类本身。注意不要把 Connection
	 * 设置为静态变量，否则它会一直存在于全局，即使再次调用或者数据库关闭之后的时候，无法再次创建。
	 * 
	 * @return
	 */
	public static SqlUtils getInstance() {
		if (instance == null) {
			instance = new SqlUtils();
		}
		return instance;
	}

	/**
	 * 获得经过转义的，符合 sql 语法的值，主要是去掉了单引号
	 * 
	 * @param sqlValue
	 *            原 sql 值
	 * @return
	 */
	public String getEscapeVale(String sqlValue) {

		if (sqlValue == null)
			return null;

		String finalValue = null;

		// 转义单引号 '
		if (StringUtils.contains(sqlValue, '\''))
			finalValue = StringUtils.replace(sqlValue, "'", "''");
		else
			finalValue = sqlValue;

		return finalValue;

	}

	/**
	 * 演示工具类用法
	 */
	private void example() {

		out.println(SqlUtils.getInstance().getEscapeVale("Hello' China's "));
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		// 探测数据库信息
		// MyDbUtils.DBVersionDetector();

		// 测试连接类
		SqlUtils.getInstance().example();

	}

}
